package img;

import java.io.File;
import java.util.function.Consumer;

public class FileUtil {

    /**
     * 获取文件后缀 带.，转小写
     * @param file 文件
     * @return 文件后缀 扩展名
     */
    public static String getFileExtWithDoc(File file) {
        int loc = file.getPath().lastIndexOf(".");
        if (loc == -1) {
            return null;
        }
        // 文件后缀
        return file.getPath().substring(loc).toLowerCase();
    }


    /**
     * 分发：是目录则继续遍历，是文件则执行处理操作
     *
     * @param filePath 文件路径
     * @param consumer 处理操作：Consumer.accept方法不允许抛出检查型异常（checked exceptions）
     */
    public static void scanOrHandleFile(String filePath, Consumer<File> consumer) throws Exception {
        File file = new File(filePath);

        if (!file.exists()) {
            System.out.println("文件不存在");
            return;
        }

        if (file.isDirectory()) {
            // 是目录
            scanFile(file, consumer);
        } else {
            // 是文件
            consumer.accept(file);
        }
    }

    /**
     * 遍历目录
     * @param _folder 目录
     * @param consumer 处理操作
     */
    private static void scanFile(File _folder, Consumer<File> consumer) {
        for (File subFile : _folder.listFiles()) {
            if (subFile.isDirectory()) {
                // 是目录 递归
                scanFile(subFile, consumer);
            } else if (subFile.isFile()) {
                // 是文件
                consumer.accept(subFile);
            }
        }
    }

}
